package com.atguigu.gulimall.order.vo;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Description : 订单确认页需要的数据
 * @Author : mayp
 * @Date: 2020-12-29 18:17
 */

public class OrderConfirmVo {

//    收货地址，ums_member_receiver_address表
    @Setter
    @Getter
    List<MemberAddressVo> memberAddress;

    @Setter
    @Getter
//    所有选中的购物项
    List<OrderItemVo> orderItemVos;

//    发票（不封装了）

//    优惠券信息（会员积分信息）
    @Setter
    @Getter
    private Integer integration;

//    BigDecimal total;// 订单总额

    BigDecimal payPrice;// 应付总价格

//    库存
    @Setter
    @Getter
    private Map<Long,Boolean> stocks;

//    在订单确认页，为了防止一个用户按多次提交订单，导致下单很多，在订单确认页每次过来都给它带一个唯一的令牌防重
    @Setter
    @Getter
    private String orderToken;

    /**
     * 计算订单总额
     */
    public BigDecimal getTotal(){
        BigDecimal sum = new BigDecimal("0");
        if (null != orderItemVos){
            for (OrderItemVo item : orderItemVos) {
                BigDecimal multiply = item.getPrice().multiply(new BigDecimal(item.getCount().toString()));
                sum = sum.add(multiply);
            }
        }
        return sum;
    }

    /**
     * 商品数量
     */
    public Integer getCount(){
        Integer i =0;
        if (null != orderItemVos){
            for (OrderItemVo item : orderItemVos){
                i+=item.getCount();
            }
        }
        return i;
    }

    /**
     * 计算应付价格
     */
    public BigDecimal getPayPrice(){
        return getTotal();
    }
}
